#include "BlockQueue.hpp"


#define NUM 5;

using namespace BlockQueueArea;
MyBlockQueue<int> bq(5);

void* Task1(void* args)//生产
{
    int data = 0;
    while(true)
    {
        sleep(3);
        bq.Push(data);
        data++;
    }
    return nullptr;
}


void* Task2(void* args)//消费
{
    while(true)
    {
        // sleep(2);
        bq.Pop();
    }
    return nullptr;
}

int main()
{
    int data = 0;
    Thread* p1 = new Thread(Task1);//生产者
    // Thread* p2 = new Thread(Task1);//生产者
    // Thread* p3 = new Thread(Task1);//生产者

    Thread* c1 = new Thread(Task2);//消费者
    // Thread* c2 = new Thread(Task2);//消费者
    // Thread* c3 = new Thread(Task2);//消费者


    c1->Start();
    // c2->Start();
    // c3->Start();


    p1->Start();
    // p2->Start();
    // p3->Start();




    c1->Join();
    // c2->Join();
    // c3->Join();

    p1->Join();
    // p2->Join();
    // p3->Join();





    // th1->Join();
    // th2->Join();



    return 0;
}